
怎麼把各自風味的材料巧妙地混合在一杯酒裡,仰賴調酒師的功力。
前後端能否順利整合,看的就不只是技術與架構能力,更多的是等價交換,想要哪裡好,那就要付出更多的成本,或是犧牲其他部分。
以前在學校修網頁設計和遊戲設計,以為一個產品就是那樣,把畫面、互動的邏輯寫好,就可以給別人用了!
如果這是離線產品,那還真的就是這樣 XD
後來修了全端開發,但對於網站架構也不是很了解,甚至不知道為什麼要學 Node.js、為什麼要串 MongoDB、為什麼要寫 React 等等、為什麼 Heroku 連結到 GitHub 就有網站可以用了......所以上課還是要認真聽 XDDD
我們做的網頁或遊戲,就是所謂的前端 (Frontend / Client),如果這個產品不需要做使用者的遠端資料儲存或是任何連線服務,的確不用另外運行一個後端 (Backend / Server) 程式。
前端做前端的,後端做後端的,大家各自開發好自己的東西,就是前後端分離......這麼說也沒有錯,只是這是「工作任務」的分離,而不是「架構」的分離。
像 PHP、C# 的 ASP.NET Web Forms、Java 的 JSP 這些十多年前就耳熟能詳的技術,現在還是非常多專案在使用,它們的架構大多是 MVC,把畫面的呈現包含在整個應用程式裡。
所以很多前端工程師的工作,並不只是單純起一個 React 或 Vue 的專案,還要與後端配合處理 MVC 整合,或者是幫這些行之有年的專案改 view(大多是一些上古 jQuery)。
而在架構上做到了完全的前後端分離後,對後端而言最大的改變,就是專案內不會再有 view,所以不能再隨意注入各種邏輯到 view 裡面,需要遵守 API 設計的 contract。
好處是前後端容易各自維護和擴充,專案的彈性更大,只要腦洞大開,突然說「我想做手機 APP」也是很常聽到的(快逃),反正後端沒換,只是多了一個前端載體。
壞處......不如說是成本,既然分離了,那麼前端的開發人員就必須懂專案打包、網頁檔案的管理、進入點等等的維運設定,不然就會像我上面提到的大學經歷那樣:「其實我也不知道 Heroku 是幹嘛的耶 XD」。
分離本來就會增加一些心智負擔和實際投入成本,如果前端還有 SSR 的需求,就會需要多一台機器運行,也是額外的成本。
很多 Vibe Coding 專案如果不特別指定技術選型,AI 應該大概都會直接起一個 Next.js 專案,然後把後端邏輯寫在 Next.js 的 server 層。
這麼做其實就和以前的 MVC 專案類似,部署也只需要一台機器。
所以分不分離就看專案的性質和團隊狀況,如果還在早期 PoC、試水溫、純屬玩玩的階段,或是專案規模不大,不分離我覺得沒什麼關係,對於小團隊可能還更好管理。
如果團隊可以負擔架構分離之後的維運管理成本,那麼分離還是可以保留比較大的彈性,畢竟沒人知道老闆哪天會腦洞大開!